Optimal angular intra prediction for block-based video coding

ABSTRACT

Encoding methods directed to making coding decisions and estimating coding parameters including searching for optimal angular prediction in intra-prediction mode; choosing the best intra block subdivision; and providing motion estimation for tree-structured inter coding. The methods are targeted to HEVC specifications of video compression, however, may be used with other video coding standards.

This application claims benefit of U.S. Provisional Application No.61/560,556, filed Nov. 16, 2011, which is hereby incorporated herein byreference in its entirety.

FIELD OF THE INVENTION

This application relates to video encoding systems, preferably tomethods for making coding decisions and estimating coding parameters forusing in video coding standards, in particular, in High Efficiency VideoCoding (HEVC) specifications for video compression.

BACKGROUND OF THE INVENTION

Video encoding is employed to convert an initial video sequence (a setof video images, also named pictures, or frames) into a correspondingencoded bitstream (a set of compressed video sequence binary data), andalso converting video sequence binary data produced by a video codecsystem into a reconstructed video sequence (a decoded set of videoimages, or reconstructed frames). Most video coding standards aredirected to provide the highest coding efficiency, which is the abilityto encode a video sequence at the lowest bit rate while maintaining acertain level of video quality.

Most video sequences contain a significant amount of statistical andsubjective redundancy within and between pictures that can be reduced bydata compression techniques to make its size smaller. First the picturesin the video sequence are divided into blocks. The latest standard, theHigh Efficiency Video Coding (HEVC) uses blocks of up to 64×64 pixelsand can sub-partition the picture into variable sized structures. HEVCinitially divides a picture into coding tree units (CTUs), which arethen divided into coding tree blocks (CTBs) for each luma/chromacomponent. The CTUs are further divided into coding units (CUs), whichare then divided into prediction units (PUs) of either intra-picture orinter-picture prediction type. All modern video standards including HEVCuse a hybrid approach to the video coding combining inter-/intra-pictureprediction and 2D transform coding.

The intra-coding treats each picture individually, without reference toany other picture. HEVC specifies 33 directional modes for intraprediction, wherein the intra prediction modes use data from previouslydecoded neighboring prediction blocks. The prediction residual is thesubject of Discrete Cosine Transform (DCT) and transform coefficientquantization.

The inter-coding is known to be used to exploit redundancy betweenmoving pictures by using motion compensation (MC), which gives a highercompression factor than the intra-coding. According to known MCtechnique, successive pictures are compared and the shift of an areafrom one picture to the next is measured to produce motion vectors. Eachblock has its own motion vector which applies to the whole block. Thevector from the previous picture is coded and vector differences aresent. Any discrepancies are eliminated by comparing the model with theactual picture. The codec sends the motion vectors and thediscrepancies. The decoder does the inverse process, shifting theprevious picture by the vectors and adding the discrepancies to producethe next picture. The quality of a reconstructed video sequence ismeasured as a total deviation of its pixels from the initial videosequence.

In common video coding standards like H.264 and HEVC (High EfficiencyVideo Coding) intra predictions for texture blocks include angular(directional) intra predictions and non-angular intra predictions(usually, in DC intra prediction mode and Planar prediction mode).Angular intra prediction modes use a certain angle in such a way thatfor texture prediction the data of the neighboring block pixels ispropagated to the block interior at such angle. Due to the sufficientamount of possible intra prediction angles (e.g. 33 in HEVCspecification) the procedure of choosing the optimal intra predictionmay become very complex: the most simple way of the intra predictionmode selection is calculating all the possible intra predictions andchoosing the best one by SAD (Sum of Absolute Difference), Hadamard SAD,or RD (Rate Distortion) optimization criterion.

However, the computational complexity of this exhaustive search methodgrows for a large number of possible prediction angles. To avoid anexhaustive search, an optimal intra prediction selection procedure isimportant in the video encoding algorithms. Moreover, the nature of themodern block-based video coding standards is that they admit a largevariety of coding methods and parameters for each texture blockformation and coding. Accommodating such a need requires selecting anoptimal coding mode and parameters of video encoding.

The HEVC coding standard, however, extends the complexity of motionestimation, since the large target resolution requires a high memorybandwidth; large blocks (up to 64×64) require a large local memory; an8-taps interpolation filter provides for a high complexity search ofsub-pixel; and ½ and ¾ non-square block subdivisions require complexmode selection.

SUMMARY

The above needs and others are at least partially met through provisionof the methods pertaining to selection of an optimal intra predictionmode and partitions, and to motion estimation for inter coding describedin the following description.

Methods for choosing the optimal intra coding mode. The methodsdescribed by Algorithm 1 and Algorithm 2 set forth herein are used forreducing the set of possible optimal intra predictions (testing sets) inthe HEVC algorithm. Algorithm 3 and Algorithm 4 as appear in the presentapplication provide low complexity methods for associating theappropriate intra prediction angle with the texture block using theconcept of Minimal Activity Direction. The present application alsoteaches an efficient method of selecting the optimal intra predictionmode which is provided by Algorithm 5. The method of choosing the bestintra block subdivision in HEVC (Algorithm 6) is based on calculation ofthe Minimal Activity Directions.

Inter coding methods: calculation for fast motion estimation and optimalblock partition. The HEVC specification assumes a huge number of optionswhen texture partitioning into inter coded blocks, each of which canhave its own motion vector for inter texture prediction. Choosing theoptimal partitions and the optimal motion vector requires advancedmethods for the texture motion estimation and analysis. The presentapplication provides integral methods for texture motion analysistargeted for usage in the HEVC video coding. These methods include themotion analysis for all possible partitions of the entire Coding-TreeUnit (CTU) and yield the motion vectors for all those partitionstogether with the recommendations for texture inter coding partition.The motion analysis method for the partitions of the entire Coding UnitTree is provided in the Algorithm 7 described herein, while Algorithm 8(described below) provides the multi-pass motion vectors refinement andAlgorithm 9 (also described below) provides local transform-based motionestimation.

The system is targeted mainly to the HEVC specifications for videocompression. Those skilled in the art, however, will appreciate thatmost of the described algorithms (both for intra and inter coding) maybe used in conjunction with other video coding standards as well.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a flow diagram of angular intra prediction directions inthe HEVC specification.

FIG. 2 shows testing sets Q for intra-prediction according to Algorithm2

FIGS. 3A-3B illustrate a Minimal Activity Directions concept.

FIG. 4 shows a flow diagram of calculating direction intra predictionmode using pre-calculated tables.

FIG. 5 shows a flow diagram of choosing the best intra mode using aminimal activity direction calculation.

FIG. 6 is a flow diagram showing preparation of a reduced resolutionimage.

FIG. 7 comprises a block diagram.

DETAILED DESCRIPTION

Generally speaking, pursuant to the following various embodiments, theencoding methods are directed to: searching for optimal angularprediction in an intra-prediction mode based on minimal activitydirections; choosing the best intra block subdivision using minimalactivity directions and strengths; and providing motion estimation fortree-structured inter coding of the HEVC specifications. Certain actionsand/or steps may be described or depicted in a particular order ofoccurrence while those skilled in the art will understand that suchspecificity with respect to sequence is not actually required. The termsand expressions used herein have the ordinary technical meaning as isaccorded to such terms and expressions by persons skilled in thetechnical field as set forth above except where different specificmeanings have otherwise been set forth herein.

Presented below are the preferred embodiments (algorithms) for each ofthe methods. Though preferred, it will be understood that theseembodiments are offered for illustrative purposes and without any intentto suggest any particular limitations in these regards by way of thedetails provided.

Selection of Optimal Angular Intra Prediction Mode in Block-Based VideoCoding

These teachings are directed to simplify the way of choosing the bestdirectional intra prediction modes in block-based video coding. By wayof illustration, FIG. 1 depicts the intra-prediction directions asprovided by the HEVC specification. However, the proposed method is notlimited to HEVC and can be applicable with corresponding evidentmodifications to any set of the directional intra predictions.

The angular intra predictions corresponding to the directions in FIG. 1are defined as P₀, P₁, . . . , P₃₂, the corresponding angles as γ₀, γ₁,. . . γ₃₂, and the planar and DC prediction mode as P₃₃, P₃₄,respectively. The prediction cost function R(P_(j)) represents the bestmode selection. It may be SAD function; Hadamard SAD function;Rate-Distortion-based cost function, and so forth. The smaller is thevalue of R(P_(j)), the more preferable the prediction P_(j).

The intra predictions corresponding to the directions P₀, P₁, . . . ,P₃₂ are represented by the following sets:

-   S₃₂={P₁₆};-   S₁₆={P₈, P₂₄};-   S₈={P₀, P₈, P₁₆, P₂₄, P₃₂};-   S₄={P₀, P₄, P₈, P₁₂, P₁₆, P₂₀, P₂₄, P₂₈, P₃₂},-   S₂={P₀, P₂, P₄, P₆, P₈, P₁₀, P₁₂, P₁₄, P₁₆, P₁₈, P₂₀, P₂₂, P₂₄, P₂₆,    P₂₈, P₃₀, P₃₂}.

One efficient way to significantly restrict the number of checked intrapredictions is to use a logarithmic search inside a set of intraprediction directions. One corresponding method, which is described byAlgorithm 1, comprises:

(i) selecting a starting set of intra prediction directions, a valueLε{32, 16, 8, 4, 2} and a cost function R(P_(K)), depending on thedesired speed and coding quality, where K is the index of this intraprediction;

(ii) from the set S_(L), finding an intra prediction providing theminimal value of the cost function R(P);

(iii) finding an intra prediction which minimizes the value of R(P) overPε{P_(K), P_(K−L/2), P_(K+L/2)};

(iv) setting a threshold T₀, which is a pre-defined parameter dependingon a desired speed, quality, block size, and so forth;

-   -   if K=2, or R(P_(K))<T₀, going to the next step; otherwise,        performing step (iii) for L=L/2;

(v) if K=2, selecting an optimal intra prediction from a set {P_(K),P_(K−1), P_(K+1), P₃₃, P₃₄ } as a prediction minimizing the value R(P);otherwise the optimal intra prediction is R(P_(K)).

Another approach to efficiently restricting the search is initiallychecking a small number of intra predictions, and constructing thetesting set of the intra prediction angles around the best angle fromthe initial subset. This approach can significantly reduce the number oftests and is described below as Algorithm 2:

-   -   select an initial set {P₀, P₈, P₁₆, P₂₄, P₃₂} for finding an        intra prediction P_(K) minimizing the value of cost function        R(P), wherein K is the index of this intra prediction;    -   set a threshold T₀, which is a pre-defined parameter of the        method depending on desired speed, quality, block size, and so        forth;    -   if R(P_(K))<T₀, the optimal prediction is P_(K), and no further        action is required;    -   if R(P_(K))≧T₀, proceed to test the following sets of intra        predictions:        -   Q₀={P₃₂, P₀, P₁, P₂, P₃, P₅, P₆};        -   Q⁸⁻={P₄, P₅, P₆, P₇, P₈, P₉, P₁₀};        -   Q₈₊={P₆, P₇, P₈, P₉, P₁₀, P₁₁, P₁₂};        -   Q¹⁶⁻={P₁₂, P₁₃, P₁₄, P₁₅, P₁₆, P₁₈, P₁₉};        -   Q₁₆₊={P₁₄, P₁₅, P₁₆, P₁₇, P₁₈, P₁₉, P₂₀};        -   Q²⁴⁻={P₂₀, P₂₁, P₂₂, P₂₃, P₂₄, P₂₅, P₂₆};        -   Q₂₄₊={P₂₂, P₂₃, P₂₄, P₂₅, P₂₆, P₂₇, P₂₈};        -   Q₃₂={P₀, P₂₇, P₂₈, P₂₉, P₃₀, P₃₁, P₃₂}.    -   choose the intra prediction set Q according to the following        requirements:        -   if K=0 or K=32, the intra prediction set Q=Q_(K);        -   if K≠0 and K≠32, then:            -   if R(P_(K−8))<R(P_(K+8)), Q=Q_(K), and            -   if R(P_(K−8))≧R(P_(K+8)); Q=Q_(K+); and    -   find the optimal intra prediction from the set Q=Q_(K)∪{P₃₃,        P₃₄}, as the one minimizing the value of R(P).

Accordingly, the present method significantly reduces the number ofintra predictions to be checked. The sets Q₀, Q⁸⁻, Q₈₊, Q¹⁶⁻, Q¹⁶⁻,Q²⁴⁻, Q₂₄₊, Q₃₂ may also be constructed as some subsets of those definedabove according to the desired speed, quality, or other measure ofinterest.

Method of Choosing a Best Intra Prediction Mode Based on TextureGradient Analysis

These teachings are based on analyzing the distribution of texturegradients inside a texture block and on its reconstructed boundaries. Itis based on a concept of Minimal Activity Direction (MAD) introduced inthis description. A minimal activity direction is defined herein as adirection inside the area S in which the variation of a function P(x, y)is minimal. In particular, if the function P(x, y) represents the pixelbrightness values of N×M picture, the minimal activity direction of thepicture area is the direction of the most noticeable boundaries andlines inside a selected area S. The greater is the minimal activitydirection strength, the brighter the corresponding line over thebackground. If the area S consists of a single point, the minimalactivity direction is just the direction orthogonal to the gradientvector at this point.

FIGS. 3A and 3B illustrate the concept of minimal activity direction.FIG. 3A illustrates the minimal activity direction for optimal intraprediction: FIG. 3A (a) shows the initial block; 3A (b)—the gradientvector g and minimal activity direction o for a single point; 3A (c)—theminimal activity directions for the whole block. In FIG. 3B the pictureis divided into 16×16 blocks, and the minimal activity directions aredrawn for all of them for the case of equal weights W. Therefore, theminimal activity directions may be used in selection of the optimalintra prediction.

In this section some auxiliary terms and notations are provided.

Let's introduce the following notations:

-   -   P(x, y) is a discrete function of two arguments defined at the        rectangular set of integer pairs R={ 0,N−1}×{ 0,M−1};    -   S is a set of integer coordinate pairs (x,y); S⊂R;    -   W(x, y) is a set of non-negative weight coefficients defined at        (x,y)εS (in the simplest case, the value of non-negative weight        W(x, y) may be chosen to be equal to 1);    -   D_(x)(x,y)=(P(x+1,y)−P(x−1,y))/2; and    -   D_(y)(x,y)=(P(x,y+1)−P(x,y−1))/2;        where D_(x)(x, y) is any measure of P(x, y) function variation        with respect to the first argument, and D_(y)(x, y) is any        measure of P(x, y) function variation with respect to the second        argument in the neighborhood of the (x, y) point.

Let's assume that ΣW(x,y)·D_(x) ²(x,y)+ΣW(x,y)·D_(y) ²(x,y)≠0 and find aminimal activity direction defined by a vector (α(S,W), β(S,W)), whichwill be the solution of the following minimization problem:

${\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot ( {{\alpha \cdot {D_{X}( {x,y} )}} + {\beta \cdot {D_{Y}( {x,y} )}}} )^{2}}}\underset{\alpha,\beta}{arrow}\min$wherein α²+β²=1.

Similarly, the minimal activity angle φ(S, W) can be found by solvingthe following minimization problem:

${\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot ( {{{\cos(\varphi)} \cdot {D_{X}( {x,y} )}} + {{\sin(\varphi)} \cdot {D_{Y}( {x,y} )}}} )^{2}}}\underset{\alpha,\beta}{arrow}\min$wherein α=cos(φ) and β=sin(φ).

The solution (α(S,W), β(S,W))of the problem above is defined up to acertain precision, and the corresponding angle φ is defined up to amultiple of π. The corresponding angle φ can be calculated from (α(S,W),β(S,W)) for example as φ(S, W)=arccos(α(S,W)).

The direction defined by the vector (α(S,W), β(S,W)) or by the angleφ(S,W) is referred to herein as the minimal activity direction.

Calculating an Angular Intra Mode Defined by Minimal Activity Direction

For present purposes on may define the angular intra prediction modes as{P₀, P₁, . . . , P_(T−1)}, and the corresponding prediction angles as{γ₀, γ₁ , . . . , γ_(T−1)}. Using the minimal activity direction asdefined above, one can calculate the following functions for a textureblock B, where S is a spatial area which may coincide with B or includeI, as follows:

${E = ( {{\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot {D_{X}^{2}( {x,y} )}}} - {\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot {D_{Y}^{2}( {x,y} )}}}} )},{F = {\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot {D_{X}( {x,y} )} \cdot {D_{Y}( {x,y} )}}}},{A = \sqrt{\frac{E^{2}}{E^{2} + {4 \cdot F^{2}}}}}$

The calculations will be considered separately for the following fourcases:

-   -   1. E≦0 and F<0;    -   2. E>0 and F<0;    -   3. E≧0 and F≧0; and    -   4. E<0 and F≧0.

It can be seen that the above four cases correspond to the followingintervals of the angle φ(S,W) values: [0; π/4], [π/4, π/2], [π/2, 3π/4]and [3π/4, π], respectively.

Algorithm 3. By this approach, the angular intra prediction modes can becalculated using the signs of E and F and the value of the ratio

${\frac{E}{F}}\mspace{14mu}{or}\mspace{14mu}{{\frac{F}{E}}.}$Using this approach, one can define the case number j= 1,4 according tothe values of E and F as described above.

The method comprises:

-   -   for each case, calculating the minimal activity direction        (α(S,W), β(S,W)) as follows:        -   1. For E≦0 and F<0:

$\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}\sqrt{( {1 + A} )/2} \\\sqrt{( {1 - A} )/2}\end{pmatrix}$

-   -   -   2. For E>0 and F<0:

$\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}\sqrt{( {1 - A} )/2} \\\sqrt{( {1 + A} )/2}\end{pmatrix}$

-   -   -   3. For E≧0 and F≧0:

$\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}{- \sqrt{( {1 - A} )/2}} \\\sqrt{( {1 + A} )/2}\end{pmatrix}$

-   -   -   4. For E<0 and F≧0:

$\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}{- \sqrt{( {1 + A} )/2}} \\\sqrt{( {1 - A} )/2}\end{pmatrix}$

-   -   calculating the corresponding angle φ(S,W)ε[0; π] as        φ(S,W)=arccos(α(S,W));    -   finding γ_(k)ε{γ₀, γ₁, . . . , γ_(T−1)} as intra prediction        angle closest to the calculated minimal activity angle φ(S,W);        and    -   choosing P_(k) as the intra prediction mode defined by the        minimal activity direction calculated above.

Algorithm 4. FIG. 4 shows another approach, in which an approximatecalculation of the minimal activity directions and the correspondingangular intra prediction mode is performed using pre-calculated tables.This method comprises:

-   -   considering some sufficiently large integers K and L defining        the accuracy of the calculations (for example, both equal to        256);    -   pre-calculating constant integer array AngleToMode[ ] of the        size K+1 providing the correspondence between a prediction angle        φε[0; π] and a prediction mode index P in the following way:        AngleToMode[round(K·φ/π]=P _(k),        wherein round(x) means rounding x to the closest integer;    -   pre-calculating for each j= 1,4 four tables        RatioToAngleDirect[j][] of the size L+1 providing the        correspondence between the ratio |E/F|ε[0;1] and the prediction        angle φε[0;π] in the following way:        RatioToAngleDirect[j][round(L·|E/F|)]=round(K·φ/π), wherein        φε[0;π];    -   pre-calculating for each j= 1,4 four tables        RatioToAngleInverse[j][ ] of the size L+1 providing the        correspondence between the ratio |F/E|ε[0;1] and the prediction        angle φε[0;π] in the following way:        RatioToAngleInverse[j][round(L·|F/E|)]=round(K·φ/π), where        φ/π[0;π];    -   calculating the values E and F as described above;    -   choosing the case number j= 1,4 according to the signs of E and        F:    -   if |E/F|ε[0;1], calculating the prediction mode P_(k) defined by        the minimal activity direction as:        P_(k)=AngleToMode[RatioToAngleDirect[j][round(L·|E/F|)]];    -   if |F/E|ε[0;1], calculate the prediction mode P_(k) defined by        the minimal activity direction as:        P _(k)=AngleToMode[RatioToAngleInverse[j][round(L·|F/E|)]].

The tables RatioToAngleDirect and RatioToAngleInverse may bepre-calculated using explicit expressions for the minimal activitydirections given above in this section.

Minimal Activity Direction Strengths

These teachings contemplate a set of the following values as thestrength of the minimal activity direction defined by (α, β), whereα²+β²=1:

${{C_{1}( {\alpha,\beta,S,W} )} = \frac{\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot ( {{{- \beta} \cdot {D_{X}( {x,y} )}} + {\alpha \cdot {D_{Y}( {x,y} )}}} )^{2}}}{\sum\limits_{{({x,y})} \in S}{W( {x,y} )}}},{{C_{2}( {\alpha,\beta,S,W} )} = \frac{\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot ( {{{- \beta} \cdot {D_{X}( {x,y} )}} + {\alpha \cdot {D_{Y}( {x,y} )}}} )^{2}}}{\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot ( {{\alpha \cdot {D_{X}( {x,y} )}} + {\beta \cdot {D_{Y}( {x,y} )}}} )^{2}}}}$

If (α, β) defines the minimal activity direction for the block B withweights W, then the corresponding values of C₁, C₂ will be denotedsimply as C₁(B,W), C₂ (B,W) and will be called the minimal activitydirection (MAD) strengths.

Simplifying the Optimal Intra Predictions Selection

A related video coding problem is to select the optimal intra predictionfrom a set of angular intra predictions for angles γ₀, γ₁ . . . γ_(T−1)(enumerated monotonically clockwise or counterclockwise) as well as fromDC and Planar predictions. A known most simple way to solve this problemis to calculate all possible intra predictions and choose the best modeby SAD, HAD or RD optimization criterion. These teachings provide a wayof minimizing the number of intra predictions that need to be checkedexplicitly.

Algorithm 5. FIG. 5 shows a flow diagram for a method of simplifiedselection of optimal intra prediction using the concept of minimalactivity direction strength as introduced above. The method comprises:

-   -   choosing a texture block B of the size L×L starting from pixel        with coordinates (x,y), for which the intra prediction is to be        selected;    -   choosing a spatial area S including block B, wherein in the        simplest case S may coincide with B;    -   choosing the weights matrix for S, wherein in the simplest case        all the weights w(j,k)=1;    -   calculating the minimal activity direction and intra prediction        mode m_(k) defined by this direction as described above;    -   defining a set Q of intra predictions to be checked for the        optimal intra prediction selection as one including angular        prediction m_(k), non-angular predictions (Planar prediction        and/or DC prediction) and, optionally, some angular prediction        modes corresponding to the angles neighboring to that defined by        the mode P_(k);    -   defining constants X₁, X₂, X₃ for parameters selected according        to the desired speed and quality of the method;    -   if the MAD strength C₁({tilde over (B)},W)<X₁, the angular        predictions for the angles γ_(k), γ_(k−1), γ_(k+1) may be        excluded from the set Q; and    -   if C₁({tilde over (B)},W)>X₂ and C₂({tilde over (B)},W)<X₃, the        DC and planar predictions may be excluded from the set Q; and    -   selecting the optimal intra prediction from the remaining set by        a simple explicit check.

Choosing a Best Intra Block Size Based on Minimal Activity Directionsand Strengths

Here one may select an intra block B of the size L×L starting from apixel with coordinates (x, y) that can be predicted by the angular intraprediction for angles γ₀, γ₁ . . . γ_(T−1) (enumerated monotonicallyclockwise or counterclockwise) and also by DC and Planar predictions.Instead of using L×L intra prediction, the block B may be divided into 4sub-blocks B_(j) of the size

${\frac{L}{2} \times \frac{L}{2}},$where jε[0,4], and each of these four blocks may be also intra predictedby an intra prediction from the same set of intra predictions. For thesake of an example, let's consider a problem of selecting the optimalblock size between one whole block or a sub-block constructed bysubdivision of the block into four sub-blocks.

The obvious solution for this problem is the exhaustive testing of allthe possible options: all the admissible intra predictions for the blockB, all the admissible intra predictions for the sub-blocks B_(j), andthen choosing the block best size by SAD or RD-optimization basedcriterion. It is also obvious that the computational complexity of thismethod is very high.

The present teachings are based on the concept of the minimal activitydirections and are directed to simplify the method of choosing the bestsubdivision of a texture block into intra blocks.

Algorithm 6. The method comprises:

-   -   considering a texture block B of the size L×L starting from a        pixel with coordinates (x,y), and its sub-blocks B_(j), jε[0,4]        of the size

$\frac{L}{2} \times \frac{L}{2}$

-   -    starting from pixels with coordinates (x,y),

$( {{x + \frac{L}{2}},y} ),( {x,{y + \frac{L}{2}}} ),( {{x + \frac{L}{2}},{y + \frac{L}{2}}} ),$

-   -    respectively;    -   constructing a spatial area S including the block B and the        spatial areas S_(j) including blocks B_(j), wherein in the        simplest case S may coincide with B and S_(j) may coincide with        B_(j);    -   calculating the minimal activity direction angles φ({tilde over        (B)},W) , φ({tilde over (B)}_(j),W), wherein α({tilde over        (B)},W)=cos(φ({tilde over (B)},W)), β({tilde over        (B)},W)=sin(φ({tilde over (B)},W));    -   calculating functions of minimal activity direction (MAD)        strength C₁({tilde over (B)},W) C₂({tilde over (B)},W),        C₁(α({tilde over (B)},W), β({tilde over (B)},W), {tilde over        (B)}_(j),W), C₂(α({tilde over (B)},W), β({tilde over (B)}, W),        {tilde over (B)}_(j),W) where jε[0,4]; and    -   selecting a single L×L block as the best size, if the MAD        strengths for all jε[0,4] are:        C ₁(α({tilde over (B)},W), β({tilde over (B)},W), {tilde over        (B)} _(j) ,W)<λ₁+μ₁ ·C ₁({tilde over (B)},W), and        C ₂(α({tilde over (B)},W), β({tilde over (B)},W), {tilde over        (B)} _(j) ,W)<λ₂+μ₂ ·C ₂({tilde over (B)},W),        wherein λ₁, μ₁, λ₂, μ₂ are pre-defined parameters of the        encoding selected according to the desired speed and quality of        the method;    -   otherwise, selecting the size as a sub-division of block B into        four

$\frac{L}{2} \times \frac{L}{2}$

-   -    blocks.

Hierarchical Multi-Level Motion Estimation for Tree-Structured InterCoding

The proposed methods are directed to reducing the complexity of the HEVCstandard video coding without degrading the coding quality.

According to these teachings, the motion estimation starts from thelargest block size allowed for the current frame and covers all thepossible smaller block sizes in a single estimation process. The methoduses a reduced resolution search in a motion estimation scheme based onAlgorithm 7 (described below) with only one base motion vector field,wherein the interpolation is used only at the latest stage of motionestimation.

Motion Estimation Suitable for HEVC encoding

The present method chooses a block size 16×16 as a base block for motionestimation in HEVC encoding, because blocks 4×4 and 8×8 are too smalland can introduce an error motion, and blocks 32×32 are too large andcan introduce an averaging motion error.

The following proposed method of motion estimation may be used under theHEVC standard.

Algorithm 7.

-   -   1. Prepare a reduced resolution image;    -   2. Perform a reduced resolution search for blocks 64×64;    -   3. Perform refinement by neighboring blocks;    -   4. Provide a motion assignment for 16×16 blocks using        neighboring blocks;    -   5. Perform a refinement search for 16×16 blocks;    -   6. Prepare error distribution (ED) analysis information for        split-merge prediction and non-square block selection;    -   7. Perform a sub-pixel refinement (without assigning vectors);    -   8. Divide 16×16 blocks into 8×8 blocks;    -   9. Merge four 16×16 blocks into one 32×32 partition;    -   10. Merge four 32×32 blocks into one 64×64 partition;    -   11. Provide a non-square block prediction using the ED field;        and    -   12. Assign quarter-pel to a selected decision.

The following approaches are used to optimize the proposed motionestimation method.

The reduced resolution search, which represents one step in ahierarchical search, is performed using reduced frames by four in bothdirections (X and Y), and performing reduced resolution search by blocks16×16 using reduced frames in order to obtain motion for 64×64 blocks inthe original frames.

A high quality motion vector field is prepared using Algorithm 8(described below) for a multi-pass motion vector field refinement inorder to obtain a very smooth and regular motion.

A fast motion search may be used in two stages of motion estimation byemploying Algorithm 9 (described below) for integer motion estimationusing non-parametric local transform.

A motion assignment for 16×16 blocks is performed using non-parametriclocal transform.

A problem of sub-dividing non-square blocks is herein solved byAlgorithm 10 (described below) for choosing between splitting andmerging certain blocks using error-distribution analysis.

The entire motion estimation is performed using interger-pel at allstages, and only after a decision is made, it may be refined toquarter-pel.

Multi-Pass Motion Vector Field Refinement

Algorithm 8. After the motion estimation for a reduced resolutionpicture is completed, a method of refinement is proposed to make motionfield more accurate, regular and smooth. This method comprises:

-   -   selecting a threshold T as a desired percent of all blocks in        the picture;    -   setting a variable count C=0;    -   for every block in the picture:        -   using motion vectors of eight neighbor blocks as candidate            motion vectors;        -   selecting a best motion vector MV by comparing SADs (sums of            absolute difference) or any other distance metric; and        -   if the vector has changed, incrementing variable count C;            and        -   if C<T, repeating the step of setting the count C.

This process can be performed multiple times before the number of motionvectors changed during a next pass is more than a selected threshold T.

Non-Parametric Local Transform Based Motion Estimation

Algorithm 9. In performing steps (2) and (4) of Algorithm 7, it isnecessary to find motion vectors in small reference frame area.Typically, the area is ±16 pixels. For such purpose one may perform atraditional block-matching procedure by calculating SAD (sum of absolutedifference) or another distance metric for all possible positions. Thisprocess is very complex and requires an extended memory bandwidth.

However, using a proposed combination of simple filters and vectoroperations, the motion estimation may be performed without a need ofactual block-matching process. In general, any suitable non-parametriclocal transform may be used as a base of the proposed motion estimationapproach.

According to one embodiment, the Census transform is used as a base foralgorithm description. The Census transform is a form of non-parametriclocal transform that relies on the relative ordering of local intensityvalues, and not on the intensity values themselves. This transform isusually used in image processing to map the intensity values of thepixels within a square window to a bit string, thereby capturing theimage structure. The intensity value of a center pixel is replaced bythe bit string composed of a set of Boolean comparisons in a squarewindow moving left to right.

Accordingly, a new value of a center pixel (A′) calculated as a sum ofbits is:A′=(A<Z _(i))*2^(i),

-   where A is a previous value of center pixel; and-   Z_(i) represents the values of the neighboring pixels.

The Census-transformed image is used to find the correlation of pixelsof the original block with the reference pixel area.

The proposed motion estimation algorithm may be divided into severalstages:

-   -   1. Performing Census transform for every input frame (gray, 8        bit/pixel);    -   2. Splitting a frame into 16×16 blocks and representing it as a        256-bytes vector (M);    -   3. Preparing a new 256-bytes vector (B), where at each position        addressed by value from vector (A), its actual position in        vector (A) is placed (index).    -   4. Preparing a correlation surface filled with zeroes (32×32        bytes);    -   5. Subtracting element-by-element vector (A) from vector (B);    -   6. Returning into the two-dimensional space and incrementing        points of the correlation surface at position given by a        resulted vector (B′);    -   7. Finding a maximum on the correlation surface, which requires        a motion vector in full-pels; and    -   8. Interpolating a sub-pixel value using neighbor values on the        correlation surface.

Error Distribution Analysis

Algorithm 10. After the actual search is done, for every block 8×8 onecan calculate the appropriate SAD. For every block 64×64 pixels one has8×8 block of SADs which can be referred to as Error Distribution Block(EDB). These teachings use the EDB concept for optimization ofSplit-Merge decisions.

The method of SPLIT decision optimization comprises:

-   -   declaring SplitThreshold as a desired level of SPLIT sensitivity        (in percents);    -   calculating average SAD of the whole EDB;    -   if any SAD in EDB differs from a calculated average SAD more        than the SplitThreshold, marking said block as a SPLIT        candidate; and    -   performing an additional refinement search for every block        marked as SPLIT candidate.

The method of MERGE decision optimization comprises:

-   -   declaring a MergeThreshold as a desired level of MERGE        sensitivity (in percents);    -   preparing an EDB pyramid based on averaging 2×2 block of SADs at        each level, wherein the pyramid comprises:        -   Level 0: an original EDB of 8×8 SADs;        -   Level 1: averaged once 4×4 SADs;        -   Level 2: averaged twice 2×2 SADs; and        -   Level 3: one averaged SAD.    -   at every level from 1 to 3, examining four correspondence SADs        to check MERGE flag;    -   if all four SADs differ from lower level SAD no more than        MergeThreshold, marking this block as a MERGE candidate;    -   performing a MERGE check for every block marked as MERGE        candidate by substituting four small blocks with one large        block.

Reduced Resolution Image Preparation

Algorithm 11. FIG. 6 illustrates the preparation of a reduced resolutionimage according to Algorithm 11. Every block 64×64 is represented as a16×16 block. A shifted Gaussian filter is used herein for the reducedimage preparation. Every pixel in reduced image (Zx/4,y/4) is calculatedas a weighted sum of pixels in the original picture O_(x,y):Z _(x/4,y/4)=(O _(x,y)+2*O _(x+1,y) +O _(x+2y)+2*O _(x,y+1)′4*O_(x+1,y+1)+2*O _(x+2,y+1) +O _(x,y+2)+2*O _(x−1,y+2) +O _(x−2,y+2))/16

This filter reduces computational complexity and provides betterencoding quality by reducing the averaging effect as compared withtraditional techniques (Simple Averaging, Gaussian Pyramid, and soforth).

Based on the above Algorithms 8-11, the following approach to MotionEstimation for Inter Coding is proposed:

-   -   preparing a reduced resolution image using Algorithm 11;    -   performing a reduced resolution search for blocks 64×64,        preferably using Algorithm 9;    -   performing a refinement by neighboring blocks, preferably using        Algorithm 8;    -   providing a motion assignment for 16×16 blocks using neighboring        blocks;    -   performing a refinement search for 16×16 blocks, preferably        using Algorithm 9;    -   preparing an error distribution (ED) analysis information for        split-merge prediction and non-square block selection,        preferably using Algorithm 10;    -   performing a sub-pixel refinement (without assigning vectors);    -   splitting 16×16 blocks into 8×8 blocks;    -   merging four 16×16 blocks into one 32×32 partition using        Algorithm 10;    -   merging four 32×32 blocks into one 64×64 partition using        Algorithm 10;    -   providing non-square block prediction using ED field according        to Algorithm 10; and    -   assigning quarter-pel to a selected decision.

In a typical application setting, and referring now to FIG. 7, thevarious algorithms, steps, actions, and the like described herein can becarried out by a corresponding control circuit 701. Such a controlcircuit 701 can comprise a fixed-purpose hard-wired platform or cancomprise a partially or wholly programmable platform. Thesearchitectural options are well known and understood in the art andrequire no further description here. This control circuit 701 isconfigured (for example, by using corresponding programming as will bewell understood by those skilled in the art) to carry out one or more ofthe steps, actions, and/or functions described herein.

By one approach this control circuit 701 operably couples to a memory702. This memory 702 may be integral to the control circuit 701 or canbe physically discrete (in whole or in part) from the control circuit701 as desired. This memory 702 can also be local with respect to thecontrol circuit 701 (where, for example, both share a common circuitboard, chassis, power supply, and/or housing) or can be partially orwholly remote with respect to the control circuit 701 (where, forexample, the memory 702 is physically located in another facility,metropolitan area, or even country as compared to the control circuit701).

This memory 702 can serve, for example, to non-transitorily store thecomputer instructions that, when executed by the control circuit 701,cause the control circuit 701 to behave as described herein. (As usedherein, this reference to “non-transitorily” will be understood to referto a non-ephemeral state for the stored contents (and hence excludeswhen the stored contents merely constitute signals or waves) rather thanvolatility of the storage media itself and hence includes bothnon-volatile memory (such as read-only memory (ROM) as well as volatilememory (such as an erasable programmable read-only memory (EPROM).)

The control circuit 701 can also operably couple, if desired, to acorresponding display 703 that can serve, for example, to depict theprocessed results as accord with these teachings.

The preceding description is intended to be illustrative of theprinciples of the invention, and it will be appreciated that numerouschanges and modifications may occur to those skilled in the art, and itis intended in the appended claims to cover all those changes andmodifications which fall within the true spirit and scope of the presentinvention.

The invention claimed is:
 1. A method of selecting an optimal angularintra prediction mode for a block-based video coding, the methodcomprising: calculating following functions for a spatial area Sincluding a texture block beginning with coordinates (x, y):${E = ( {{\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot {D_{X}^{2}( {x,y} )}}} - {\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot {D_{Y}^{2}( {x,y} )}}}} )},{F = {\sum\limits_{{({x,y})} \in S}{{W( {x,y} )} \cdot {D_{X}( {x,y} )} \cdot {D_{Y}( {x,y} )}}}},{{A = \sqrt{\frac{E^{2}}{E^{2} + {4 \cdot F^{2}}}}};}$wherein W(x,y) is a set of non-negative weight coefficients defined at(x,y)εS; D_(x)(x,y) and D_(y)(x,y) are variations of function P(x,y) inthe neighborhood of (x, y) point: D_(x)(x,y)=(P(x+1,y)−P(x−1,y))/2;D_(y)(x,y)=(P(x,y+1)−P(x,y−1))/2; and calculating a minimal activitydirection for each case j= 1,4:
 1. E≦0 and F<0;
 2. E>0 and F<0;
 3. E≧0and F≧0; and
 4. E<0 and F≧0.
 2. The method of selecting an optimalangular intra prediction mode of claim 1, wherein the minimal activitydirection for each case j= 1,4 is calculated as a vector (α(S,W),β(S,W)): ${\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}\sqrt{( {1 + A} )/2} \\\sqrt{( {1 - A} )/2}\end{pmatrix}};$ ${\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}\sqrt{( {1 - A} )/2} \\\sqrt{( {1 + A} )/2}\end{pmatrix}};$ ${\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix} = \begin{pmatrix}{- \sqrt{( {1 - A} )/2}} \\\sqrt{( {1 + A} )/2}\end{pmatrix}};{{{and}\begin{pmatrix}{\alpha( {S,W} )} \\{\beta( {S,W} )}\end{pmatrix}} = \begin{pmatrix}{- \sqrt{( {1 + A} )/2}} \\\sqrt{( {1 - A} )/2}\end{pmatrix}}$ calculating a corresponding minimal activity angleφ(S,W)ε[0;π] as φ(S,W)=arccos(α(S,W)); finding an intra prediction angleγ_(k) closest to φ(S,W); and choosing an optimal intra prediction modeP_(k) as defined by the minimal activity direction.
 3. The method ofclaim 2, wherein the four cases j= 1,4 correspond to respectiveintervals of the angle φ(S,W): [0; π/4], [π/4, π/2], [π/2, 3π/4] and[3π/4, π].
 4. A method of calculating tables for minimal activitydirections and corresponding angular prediction modes using signs of Eand F and the value of the ratio${\frac{E}{F}}\mspace{14mu}{or}\mspace{14mu}{\frac{F}{E}}$ accordingto claim 1, the method comprising: considering integers K and L definingaccuracy of calculations; calculating constant integer arrayAngleToMode[ ] of size K+1 providing correspondence between a predictionangle φε[0; π] and a prediction mode index P:AngleToMode[round(K·φ/π)]=P _(k); calculating four tablesRatioToAngleDirect[j][ ] of size L+1 for each case j= 1,4, providingcorrespondence between the ratio |E/F|ε[0; 1] and the prediction angleφε[0;π]:RatioToAngleDirect[j][round(L·|E/F|)]=round(K·φ/π), wherein φε[0;π];calculating four tables RatioToAngleInverse[j][ ] of size L+1 for eachcase j= 1,4, providing the correspondence between the ratio |F/E|ε[0;1]and the prediction angle φε[0;π]:RatioToAngleInverse[j][round(L·|F/E|)]=round(K·φ/π), where φε[0;π];calculating values E and F; choosing a case number j= 1,4 according tothe signs of E and F: if |E/F|ε[0;1], calculating a prediction modeP_(k) defined by the minimal activity direction as:P _(k)=AngleToMode[RatioToAngleDirect[j][round(L·|E/F|)]]; and if|F/E|ε[0;1], calculating the prediction mode P_(k) defined by theminimal activity direction as:P _(k)=AngleToMode[RatioToAngleInverse[j][round(L·|F/E|)]]; whereinround( )stays for rounding a number to a closest integer.
 5. The methodof claim 4, wherein integers K and L are equal to 256.